ADO.NET 與 Entity Framework CRUD 示範 (以學生表為例)
ADO.NET CRUD 示範
C#
using System.Data.SqlClient;
// 假設資料庫連接字串為 connectionString
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// 建立命令物件
SqlCommand command = connection.CreateCommand();
}
請謹慎使用程式碼。
新增:
C#
command.CommandText = "INSERT INTO Students (Name, BirthDate) VALUES (@Name, @BirthDate)";
command.Parameters.AddWithValue("@Name", "張三");
command.Parameters.AddWithValue("@BirthDate", new DateTime(2000, 1, 1));
command.ExecuteNonQuery();
請謹慎使用程式碼。
查詢:
C#
command.CommandText = "SELECT * FROM Students";
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int studentId = (int)reader["StudentId"];
string name = (string)reader["Name"];
}
reader.Close();
請謹慎使用程式碼。
更新:
C#
command.CommandText = "UPDATE Students SET Name = @NewName WHERE StudentId = @Id";
command.Parameters.AddWithValue("@NewName", "李四");
command.Parameters.AddWithValue("@Id", 1);
command.ExecuteNonQuery();
請謹慎使用程式碼。
刪除:
C#
command.CommandText = "DELETE FROM Students WHERE StudentId = @Id";
command.Parameters.AddWithValue("@Id", 1);
command.ExecuteNonQuery();
請謹慎使用程式碼。
Entity Framework ( Code First)CRUD 示範
C#
public class StudentContext : DbContext
{
public DbSet Students { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("YourConnectionString");
}
}
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
}
請謹慎使用程式碼。
新增:
C#
using (var context = new StudentContext())
{
var student = new Student { Name = "王五", BirthDate = new DateTime(2001, 2, 2) };
context.Students.Add(student);
context.SaveChanges();
}
請謹慎使用程式碼。
查詢:
C#
using (var context = new StudentContext())
{
var students = context.Students.Where(s => s.Name.StartsWith("張")).ToList();
}
請謹慎使用程式碼。
更新:
C#
using (var context = new StudentContext())
{
var student = context.Students.FirstOrDefault(s => s.StudentId == 1);
student.Name = "李四";
context.SaveChanges();
}
請謹慎使用程式碼。
刪除:
C#
using (var context = new StudentContext())
{
var student = context.Students.FirstOrDefault(s => s.StudentId == 1);
context.Students.Remove(student);
context.SaveChanges();
}
如果改成DATABASE FIRST只是
建立 DbContext
新增 DbContext 類別: 在您的專案中新增一個繼承自 DbContext 的類別。
配置 DbContext: 在 OnConfiguring 方法中設定資料庫連接字串。
定義 DbSet: 為每個實體類別定義 DbSet 屬性。
C#
using Microsoft.EntityFrameworkCore;
public class SchoolContext : DbContext
{
public DbSet Students { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=your_server;Database=your_database;Trusted_Connection=True;");
}
}
public class Student
{
public int StudentId { get; set; }
public string Name { get; set; }
public DateTime BirthDate { get; set; }
}
請謹慎使用程式碼。
一樣開始操作資料
using (var context = new SchoolContext())
{
// 新增學生
var newStudent = new Student { Name = "王小明", BirthDate = new DateTime(2005, 1, 1) };
context.Students.Add(newStudent);
context.SaveChanges();
// 查詢所有學生
var allStudents = context.Students.ToList();
foreach (var student in allStudents)
{
Console.WriteLine($"學生 ID: {student.StudentId}, 姓名: {student.Name}, 生日: {student.BirthDate}");
}
// 查詢特定學生
var specificStudent = context.Students.FirstOrDefault(s => s.Name == "王小明");
if (specificStudent != null)
{
Console.WriteLine($"找到學生: {specificStudent.Name}");
}
// 更新學生資料
specificStudent.Name = "王大明";
context.SaveChanges();
// 刪除學生
context.Students.Remove(specificStudent);
context.SaveChanges();